package com.elite.annotation.selector;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.context.event.EventListener;
import org.springframework.core.type.AnnotationMetadata;

import java.util.function.Predicate;

/**
 * 自定义要返回需要导入的组件
 *
 * 这个是结合@Import注解使用的
 */
public class MyImportSelector implements ImportSelector, ImportBeanDefinitionRegistrar {
    /**
     * 返回值就是导入到容器中的组件全类名
     * @param importingClassMetadata 这个参数是标注@Import注解的所有注解信息
     *
     * @return
     */

    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        System.out.println("哈哈哈哈");
        return new String[]{"com.elite.entity.Student"};
    }

    @Override
    public Predicate<String> getExclusionFilter() {
        return ImportSelector.super.getExclusionFilter();
    }


	/**
	 * 这个自己注册bean的定义信息
	 * @param importingClassMetadata annotation metadata of the importing class
	 * @param registry current bean definition registry
	 */
	@Override
	public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

	}
}
